Nonvolatile memory devices, such as flash memory devices, are widely used in a variety of applications such as universal serial bus (USB) drives, digital cameras, mobile phones, smart phones, tablet personal computers (PCs), memory cards, and solid state drives (SSDs), to name but a few.
A flash memory device is typically organized into a plurality of memory blocks, pages, and memory cells, where each of the memory blocks comprises a plurality of pages, and each of the pages comprises a plurality of memory cells. In general, each of the memory cells may be a single-level cell (SLC) or a multi-level cell (MLC). An SLC is a memory cell that stores one bit of information, and an MLC is a memory cell that stores multiple bits of information.
In a typical flash memory device, program operations are performed in units of pages, and erase operations are performed in units of memory blocks. Where a flash memory device receives a program command to replace a page of current data with new data, the flash memory device typically stores the new data in a page having an erased state, and it invalidates the current data. In other words, the flash memory device does not overwrite the current data at its current page location, but merely invalidates the current data and stores the new data in another page.
As the flash memory device continues to operate, invalid pages tend to accumulate in memory blocks that have not been recently erased. The accumulation of invalid pages generally reduces the amount of usable storage space in the flash memory device, and it can also slow down operation of the flash memory device. Accordingly, so-called garbage collection operations may be performed on memory blocks containing significant numbers of invalid pages to reclaim some of the storage space. A typical garbage collection operation involves moving any remaining valid data from a target memory block to a different memory block and then erasing the target memory block. Garbage collection operations are typically performed automatically as part of memory management.
However, a result of the garbage collection operation is that incoming I/O read/write commands are stalled. During a garbage collection operation, the copying of valid pages to new locations and block erasures degrades the overall performance and hence reduces the workload potential.
Another difference between hard disk drives (HDD) and flash based storage (SSD) relates to the limited number of write cycles in a flash media. After multiple writes to a cell, it will inadvertently suffer from endurance problems caused by the breakdown of the oxide layer. A second problem with respect to NAND flash is the limited data retention. Whereas HDDs retain data practically unlimited, NAND flash data are subjected to leakage currents causing the programming charge to dissipate and hence resulting in data loss. With smaller process geometry, this retention problem is becoming increasingly important and requires constant scrubbing of data in order to counteract increasing failure rates by refreshing them to a new physical location.
There is interest in the field in providing improved control over garbage collection. For example, the InterNational Committee on Information Technology Standards (INCITS) T10 technical committee has included “Storage Intelligence Command” set into its Storage Primary Command (SPC). Version SPC-5 of the command set provides a mechanism to control (among other things) garbage collection operation in an SSD. The command set adds to SCSI mechanism methods to control the operation of the garbage collection—Start and Stop. Furthermore, it provides methods to retrieve additional SSD related information such as the number of free pages.
However, there are still many practical problems in garbage collection, particularly in Redundant Array Of Independent Disks (RAID) architecture using SSD devices. In particular, there is a lack of commercially practical solutions to manage garbage collection and wear leveling in a pool of SSDs.